3.1.8. მართვის ელემენტში დახარისხების განხორციელება პროგრამულად ზრდადობით და კლებადობით
წინა მაგალითისგან განსხვავებით, მითითებულ ველებში მართვის ელემენტის ცხრილზე დაწკაპუნებისას მონაცემების დახარისხება ხორციელდება ზრდადობით ან კლებადობით.
html კოდი შემდეგია
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head><body>
<form id="form1" runat="server">
<div><br />
<asp:DataGrid ID="DataGrid1" runat="server" AllowSorting="True" AutoGenerateColumns="False"
Font-Names="AcadNusx">
<Columns>
<asp:TemplateColumn HeaderText="gvari" SortExpression="gvari">
<ItemTemplate>
<asp:Label runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.gvari") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="saxeli" SortExpression="saxeli">
<ItemTemplate>
<asp:Label runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.saxeli") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateColumn>
</Columns></asp:DataGrid><br /> </div></form></body>
</html>
პროგრამული კოდი შემდეგია:
მონაცემების წყაროსთან დაკავშირება ხორციელდება წინა მაგალითში მოტანილი პროგრამით binddata;
გვერდის ჩატვირთვისთანავე მართვის ელემენტის შევსება მონაცემებით ხორციელდება წინა მაგალითში მოტანილი პროგრამით;
დახარისხება ხორციელდება პროგრამით:
Protected Sub DataGrid1_SortCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridSortCommandEventArgs) Handles DataGrid1.SortCommand
Me.ViewState("sort") = e.SortExpression
If Me.DataGrid1.Columns(0).SortExpression = e.SortExpression _
Or Me.DataGrid1.Columns(1).SortExpression = e.SortExpression Then
If e.SortExpression.IndexOf("desc") <> -1 Then Me.DataGrid1.Columns(0).SortExpression = Me.DataGrid1.Columns(0).SortExpression.Replace(" desc", "")
‘ aq desc-is win unda iyos ori intervalis niSani
Me.DataGrid1.Columns(1).SortExpression = Me.DataGrid1.Columns(1).SortExpression.Replace(" desc", "")
'აქაც desc-ის წინ უნდა იყოს ორი ინტერვალის ნიშანი
Else Me.DataGrid1.Columns(0).SortExpression += " desc" ‘'saWiroa iyos ori intervalis niSani
Me.DataGrid1.Columns(1).SortExpression += " desc"
' საჭიროა იყოს ორი ინტერვალის ნიშანი
End If: End If
binddata()
End Sub
3.1.9. მონაცემების ბაზაში ცვლილებების განხორციელება მართვის ელემენტის DataGrid-ის საშუალებით
მართვის ელემენტში DataGrid ჩაშენებულია მონაცემების ბაზაში ცვლილებების ჩატარების შესაძლებლობა. მაგ., მეხუთე სტრიქონის რედაქტირებისთვის საჭიროა მართვის ელემენტის DataGrid თვისებას EditItemIndex მივანიჭოთ მნიშვნელობა 4 (სტიქონების ნომერაცია იწყება ნულიდან). რედაქტირების რეჟიმიდან გამოსასვლელად საჭიროა თვისებას EditItemIndex მიანიჭოთ მნიშვნელობა -1. ყველაზე რთული მომენტია მონაცემების ბაზიდან მონაცემების მოძებნა და ცვლილების შეტანის შემდეგ მათი ბაზაში ჩაწერა.
რედაქტირების, რედაქტირების გაუქმების და რედაქტირებული მნიშვნელობის შენახვისთვის (EditCommand, CancelCommand, UpdateCommand) DataGrid-Si გათვალისწინებულია სპეციალური ტიპის სვეტი ButtonColumn.
გვერდზე დაიტანეთ მართვის ელემენტი DataGrid;
ვიზუალური დაპროექტების რეჟიმში მართვის ელემენტზე დაიტანეთ სპეციალური ტიპის სვეტი ButtonColumn;
ButtonColumn-ის სტრიქონებში ჩაწერეთ: რედაქტირება, შენახვა, გაუქმება. HTML კოდში მათ შეესაბამება: EditText=„რედაქტირებa”; UpdateText=„შენახვა” CancelText=„გაუქმება”
html კოდი შემდეგია:
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head><body>
<form id="form1" runat="server">
<div><br />
<asp:DataGrid ID="DataGrid1" runat="server" AutoGenerateColumns="False">
<Columns>
<asp:EditCommandColumn CancelText="gauqmeba" EditText="redaqtireba" UpdateText="Senaxva">
</asp:EditCommandColumn>
<asp:BoundColumn DataField="nomeri" HeaderText="nomeri"></asp:BoundColumn>
<asp:BoundColumn DataField="gvari" HeaderText="gvari"></asp:BoundColumn>
<asp:BoundColumn DataField="saxeli" HeaderText="saxeli"></asp:BoundColumn>
</Columns>
</asp:DataGrid>
<br /></div></form></body>
</html>
მონაცემების ბაზიდან მონაცემების მოსაძებნად და მართვის ელემენტში გამოსატანად გამოვიყენოთ (დავწეროთ) მეთოდი (პროგრამა) binddata1.
Private Sub binddata1() ' redaqtirebisTvis
Dim ds As DataSet = New DataSet()
Dim conn As String = "Provider=Microsoft.Jet.OLEDB.4.0;data source=" _
& Server.MapPath("ekonfakulteti.mdb")
Dim da As OleDbDataAdapter = New OleDbDataAdapter("SELECT nomeri, gvari, saxeli FROM tbstudentiz", conn)
da.Fill(ds)
DataGrid1.DataSource = ds.Tables(0).DefaultView
DataGrid1.DataKeyField = "nomeri"
DataGrid1.DataBind()
End Sub
მონაცემების რედაქტირების და რედაქტირების. გაუქმების დამმუშავებელი დაკავშირებულია შესაბამისად მოვლენებთან EditCommand, CancelCommand. აქ ხორციელდება თვისებისთვის EditItemIndex მნიშვნელობის მინიჭება.
Protected Sub DataGrid1_EditCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGrid1.EditCommand
DataGrid1.EditItemIndex = e.Item.ItemIndex
binddata()
End Sub
Protected Sub DataGrid1_CancelCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGrid1.CancelCommand
DataGrid1.EditItemIndex = -1
binddata()
End Sub
BoundColumn-ში მონაცემების დაკავშირების დროს გენერირებული ცხრილის ყველა უჯრაში ისმება ლიტერალი LiteralControl მონაცემებით მონაცემების ბაზის შესაბამისი ველიდან ან მხოლოდ რედაქტირებული სტრიქონები.
3.1. 10. მართვის ელემენტში DataGrid მონაცემების წაშლა
თუ DataGrid დაკავშირებულია მართვის ელემენტთან, მაშინ საჭიროა თვისებას RecordSource მიანიჭოთ "" (ცარიელი სტრიქონი) და შემდეგ გამოიყენოთ მეთოდი Refresh.
Sub Command1_Click()
Data1.RecordSource = ""
'ვაყენებთ RecordSource -ს ე.წ. ნულოვან წერტილში
Data1.Refresh
SSDataGrid1.Refresh
End Sub
თუ DataGrid დაკავშირებული არ არის მართვის ელემენტთან, მაშინ თვისებისთვის Rows ნულის მინიჭება წაშლის მონაცემებს DataGrid-ში.
3.1.11. მართვის ელემენტში DataGrid-ის უჯრებისთვის ფერის და შრიფტის შეცვლა
ფერის და შრიფტის შეცვლა შესაძლებელია თვისებების (RowCellForeColor, RowCellBackColor, RowCellItalic) მნიშვნელობების შეცვლით. დავაკავშიროთ ცვლილებები ფორმის მოვლენასთან RowLoaded, რომელიც წამოიქმნება ფორმის პირველად ჩატვირთვის დროს. შემდეგ მაგალითში ნულოვანი სვეტი იქნება წითელი ფერის, შრიფტი კი – დახრილი და თეთრი ფერის:
Sub DataGrid1_RowLoaded (BookMark As String, _
RowNum As Long)
SSDataGrid1.RowCellForeColor(0) = _
RGB(255,255,255)
SSDataGrid1.RowCellBackColor(0) = RGB(255,0,0)
‘'striqonis feri gaxdeba wiTeli
SSDataGrid1.RowCellItalics(0) = True
‘'შრიფტი გახდება დახრილი
End Sub
შეიძლება თვისებაში EvalRowNumber მივუთითოთ სტრიქონების რაოდენობა და შემდეგ შევცვალოთ ფერის, შრიფტის პარამეტრები.
Sub Command1_Click()
SDataGrid1.EvalRowNumber = 10
'სტრიქონების რაოდენობის მითითება
SSDataGrid1.RowCellForeColor(2) = RGB(255,255,255)
'მეორე სვეტში შრიფტი დაიწერება თეთრ ფერად
SSDataGrid1.RowCellBackColor(2) = RGB(255,0,0)
'მეორე სვეტის ფონი წითელი გახდება
SSDataGrid1.RowCellItalics(2) = True
'მეორე სვეტში ტექსტი დაიწერება დახრილად
End Sub